package demo09;

import java.util.Comparator;
import java.util.TreeSet;

/*
        1. 已知数字1, 2, 3, 4,  将它们组合成4位数, 并且存储到合适的集合中, 然后按照3个一行的格式, 降序输出.
        2. 要求1: 该4位数必须同时包含1, 2, 3, 4这四个数字.	//例如: 1234, 1423都可以,  1122不行.
        3. 要求2: 该4位数不能以3开头.  						//例如: 1234可以,  3214不行.
        4. 要求3: 该4位数中, 数字1和3不能挨着.  			//例如: 1234可以, 1324, 2314不行.
        5. 输出格式如下:
            4321	4312	4123
            3421	...
 */
public class Test02 {

    public static void main(String[] args) {
        //1. 创建TreeSet集合对象ts
        TreeSet<Integer> ts = new TreeSet<Integer>(new Comparator<Integer>() {
            @Override
            public int compare(Integer in1, Integer in2) {
                //降序,后 - 前
                return in2.compareTo(in1);
            }
        });

        //2.1 给定的四位数
        int arr[] = {1, 2, 3, 4};
        int count = 0;
        getNum(arr, ts);
        for (Integer in : ts) {
            count++;
            System.out.print(count % 3 == 0 ? in + "\r\n" : in + "\t");
        }
    }

    public static void getNum(int[] arr, TreeSet<Integer> list) {
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length; j++) {
                for (int k = 0; k < arr.length; k++) {
                    A:
                    for (int l = 0; l < arr.length; l++) {
                        if (arr[i] != arr[j] && arr[i] != arr[k] && arr[i] != arr[l] &&
                                arr[j] != arr[k] && arr[j] != arr[l] && arr[k] != arr[l] && arr[i] != 3) {
                            int[] arr2 = new int[]{arr[i], arr[j], arr[k], arr[l]};
                            for (int a = 0; a < arr2.length - 1; a++) {
                                if ((arr2[a] == 1 && arr2[a + 1] == 3) || (arr2[a] == 3 && arr2[a + 1] == 1))
                                    continue A;
                            }
                            list.add(arr[i] * 1000 + arr[j] * 100 + arr[k] * 10 + arr[l]);
                        }
                    }
                }
            }
        }
    }
}
